package datos;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 *
 * @author Minixuru
 */
public class CreacionTablas {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        CrearBD.CargarDriver();
        
        Connection conexion = null;
        PreparedStatement ps = null;

        String user = ConectarBD.getUser();
        String password = ConectarBD.getPassword();
        String url = "jdbc:mysql://localhost:3306/GestionProfesor";


        try {
            conexion = DriverManager.getConnection(url, user, password);
        } catch (Exception ex) {
            System.err.println("Error DriverManager.getConnection(): " + ex);
        }

        String queryTipos_Falta = "CREATE TABLE TIPOS_FALTA(ID_TIPOS_FALTA VARCHAR(50),DESC_FALTA VARCHAR(50),"
                + "CONSTRAINT CLAVE_TIPOS_FALTA PRIMARY KEY (ID_TIPOS_FALTA))";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryTipos_Falta);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla TIPOS_FALTA");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        String queryRol = "CREATE TABLE ROL(ID_ROL VARCHAR(50),NOM_ROL VARCHAR(50),CONSTRAINT CLAVEROL PRIMARY KEY (ID_ROL))";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryRol);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla ROL");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        String queryProfesor = "CREATE TABLE PROFESOR(ID_PROFESOR VARCHAR(50),NOMBRE_PROFESOR VARCHAR(50),APE1_PROFESOR VARCHAR(50),APE2_PROFESOR VARCHAR(50),"
        		+ "NIF_PROFESOR VARCHAR(50),TFNO_PROFESOR INT,EMAIL_PROFESOR VARCHAR(50),USUARIO_APP_PROFESOR VARCHAR(50),PASSWORD_APP_PROFESOR VARCHAR(50),"
        		+ "CONSTRAINT CLAVE_PROFESOR PRIMARY KEY (ID_PROFESOR))";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryProfesor);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla PROFESOR");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        String queryRolProfesor = "CREATE TABLE ROL_PROFESOR(ID_ROL VARCHAR(50),ID_PROFESOR VARCHAR(50)," 
        		+ "CONSTRAINT CLAVEROL_PROFESOR PRIMARY KEY (ID_ROL,ID_PROFESOR),FOREIGN KEY (ID_ROL) REFERENCES ROL(ID_ROL),"
        		+ "FOREIGN KEY (ID_PROFESOR) REFERENCES PROFESOR(ID_PROFESOR))";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryRolProfesor);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla ROL_PROFESOR");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        String insertProfesor = "INSERT INTO PROFESOR (ID_PROFESOR,NOMBRE_PROFESOR,APE1_PROFESOR,APE2_PROFESOR,NIF_PROFESOR,TFNO_PROFESOR," +
        		"EMAIL_PROFESOR,USUARIO_APP_PROFESOR,PASSWORD_APP_PROFESOR) VALUES('"+"000"+"','"+"admin"+"','"+"admin"+"','"+"admin"+"','"+"nifadmin"+"','"+0+"','"+"admin@fpcheste.com"+"','"+"admin"+"','"+"1234"+"')";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(insertProfesor);
            ps.executeUpdate();
            System.out.println("Exito al insertar correctamente admin en la tabla PROFESOR");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        String queryGRUPO = "CREATE TABLE GRUPO(ID_GRUPO VARCHAR(50),NOM_GRUPO VARCHAR(50),CURSO_GRUPO VARCHAR(50),ID_PROFESOR VARCHAR(50),"
                + "CONSTRAINT CALVE_GRUPO PRIMARY KEY (ID_GRUPO),FOREIGN KEY (ID_PROFESOR) REFERENCES PROFESOR (ID_PROFESOR))";

        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryGRUPO);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla GRUPO");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }   
        
        String queryAlumno = "CREATE TABLE ALUMNO(ID_ALUMNO VARCHAR(20),IMAGEN_ALUMNO VARCHAR(200),NOM_ALUMNO VARCHAR(50),APE1_ALUMNO VARCHAR(50),APE2_ALUMNO VARCHAR(50)," +
        		"NIF_ALUMNO VARCHAR(50),DIRECCION_ALUMNO VARCHAR(50),PROVINCIA_ALUMNO VARCHAR(50),LOCALIDAD_ALUMNO VARCHAR(50),CP_ALUMNO INT,TFNO_ALUMNO INT," +
        		"EMAIL_ALUMNO VARCHAR(50),GENERO_ALUMNO VARCHAR(50),CURSO_ALUMNO VARCHAR(50),FECHA_NAC_ALUMNO VARCHAR(50)," +
        		"ID_GRUPO VARCHAR(50),CONSTRAINT CLAVE_ALUMNO PRIMARY KEY (ID_ALUMNO),FOREIGN KEY (ID_GRUPO) REFERENCES GRUPO (ID_GRUPO))";
        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryAlumno);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla ALUMNO");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        String queryFalta_alumno = "CREATE TABLE FALTA_ALUMNO(ID_FALTA_ALUMNO VARCHAR(50),FECHA_ALTA DATE,ID_ALUMNO VARCHAR(50),ID_TIPOS_FALTA VARCHAR(50),"
                + "CONSTRAINT CLAVE_FALTA_ALUMNO PRIMARY KEY (ID_FALTA_ALUMNO),FOREIGN KEY (ID_TIPOS_FALTA) REFERENCES TIPOS_FALTA (ID_TIPOS_FALTA))";
        try {
            ps = (PreparedStatement) conexion.prepareStatement(queryFalta_alumno);
            ps.executeUpdate();
            System.out.println("Exito al crear correctamente la tabla FALTA_ALUMNO");
        } catch (SQLException ex) {
            System.out.println("Error ps.executeQuery(): " + ex);
        }
        
        try {
            ps.close();
            conexion.close();
        } catch (SQLException ex) { /*ignore Exception */

        }
    }
}